package com.ccn.ui.a1ui;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.ColorMatrix;
import android.graphics.ColorMatrixColorFilter;
import android.graphics.LightingColorFilter;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffColorFilter;
import android.util.AttributeSet;
import android.view.View;

import androidx.annotation.Nullable;

import com.ccn.ui.R;

/**
 * 1.2.2滤镜
 * LightingColorFilter 模拟光照效果
 * PorterDuffColorFilter 图像与图层颜色混合
 * ColorMatrixColorFilter 颜色数组+颜色矩阵
 * ColorMatrix
 */
public class A1_2ColorFilterView extends View {
    private Paint mPaint;
    private Bitmap mBitmap;

    public A1_2ColorFilterView(Context context) {
        this(context, null);
    }

    public A1_2ColorFilterView(Context context, @Nullable AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public A1_2ColorFilterView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

    private void init() {
        mPaint = new Paint();
        mBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.test);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        /*
         *R' = R * mul.R /0xff + add.R
         *G' = G * mul.G /0xff + add.G
         *B' = B * mul.B /0xff + add.B
         * */
        //去除红色 mul:0x00ffff add:0x000000
//        LightingColorFilter colorFilter = new LightingColorFilter(0x00ffff, 0x000000);
//        mPaint.setColorFilter(colorFilter);
//        canvas.drawBitmap(mBitmap, 0, 0, mPaint);

        //原始效果
//        LightingColorFilter colorFilter = new LightingColorFilter(0xffffff, 0x000000);
//        mPaint.setColorFilter(colorFilter);
//        canvas.drawBitmap(mBitmap, 0, 0, mPaint);

        //绿色更亮
//        LightingColorFilter colorFilter = new LightingColorFilter(0xffffff, 0x003000);
//        mPaint.setColorFilter(colorFilter);
//        canvas.drawBitmap(mBitmap, 0, 0, mPaint);

        //PorterDuffColorFilter 混合颜色滤镜
//        PorterDuffColorFilter colorFilter = new PorterDuffColorFilter(Color.RED, PorterDuff.Mode.DARKEN);
//        mPaint.setColorFilter(colorFilter);
//        canvas.drawBitmap(mBitmap, 0, 0, mPaint);

        //原图
        /*float[] colorMatrixArray = {
                //第五列表示对应颜色通道的加深
          1,0,0,0,0,//red
          0,1,0,0,0,//green
          0,0,1,0,0,//blue
          0,0,0,1,0,//alpha
        };
        ColorMatrixColorFilter colorFilter = new ColorMatrixColorFilter(colorMatrixArray);
        mPaint.setColorFilter(colorFilter);
        canvas.drawBitmap(mBitmap,100,0,mPaint);*/
        ColorMatrix colorMatrix = new ColorMatrix();
        //亮度调节
        colorMatrix.setScale(1,2,1,1);
        //饱和度调节 0无色彩 1默认效果 》1饱和度加深
        colorMatrix.setSaturation(2);
        //色彩调节 三维坐标系设置旋转角度 0red 1green 2blue
        colorMatrix.setRotate(0,45);
        colorMatrix.setRotate(1,45);
        colorMatrix.setRotate(2,45);
        ColorMatrixColorFilter colorFilter = new ColorMatrixColorFilter(colorMatrix);
        mPaint.setColorFilter(colorFilter);
        canvas.drawBitmap(mBitmap,100,0,mPaint);
    }
}
